package com.pro.addresslist.ui.common;

import android.app.Activity;
import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.media.SoundPool;
import android.preference.PreferenceManager;
import android.widget.Toast;

import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/**
 * 
 * @author Libs
 * 
 */
public class MyApplication extends Application {
	/*
	 * SharedPreferences是以键值对来存储应用程序的配置信息的一种方式，
	 * 它只能存储基本数据类型。一个程序的配置文件仅可以在本应用程序中使用， 或者说只能在同一个包内使用，不能在不同的包之间使用。
	 * 实际上sharedPreferences是采用了XML格式将数据存储到设备中，
	 */
	private SharedPreferences mSharedPreferences;
	public List<Activity> unDestroyActivityList = new ArrayList<Activity>();
	private static MyApplication instance;
	public static RequestQueue requestQueue;

	// 临时activityList,用于登录注册的时候记住开启了哪些activity
	public List<Activity> tempActivityList = new LinkedList<Activity>();

	// 存储已登录用户的信息
	// public UserInfo user;
	private static int screenWidth, screenHeight;

	@Override
	public void onCreate() {
		super.onCreate();
		requestQueue = Volley.newRequestQueue(getApplicationContext());
		mSharedPreferences = PreferenceManager
				.getDefaultSharedPreferences(this);
	}

	/**
	 * 得到
	 */
	public synchronized static MyApplication getInstance() {
		if (null == instance) {
			instance = new MyApplication();
		}
		return instance;
	}

	/**
	 * 得到网络请求
	 * 
	 * @return
	 */
	public static RequestQueue getHttpQueue() {
		return requestQueue;
	}

	private Toast toast;

	/**
	 * 短时间显示Toast 作用:不重复弹出Toast,如果当前有toast正在显示，则先取消
	 * 
	 * @param info
	 *            显示的内容
	 */
	public void showToast(String info) {
		if (toast != null) {
			toast.cancel();
		}
		toast = Toast.makeText(this, info, Toast.LENGTH_SHORT);
		toast.setText(info);
		toast.show();
	}

	/**
	 * 添加activity
	 */
	public void addActivity(Activity activity) {
		unDestroyActivityList.add(activity);
	}

	/**
	 * 退出应用
	 */
	public void quit() {
		for (Activity activity : unDestroyActivityList) {
			if (null != activity) {
				activity.finish();
			}
		}
		unDestroyActivityList.clear();
	}

	// 清除所有临时的activity
	public void clearTempActivityList() {
		for (Activity activity : tempActivityList) {
			if (activity != null) {
				if (!activity.isFinishing()) {
					activity.finish();
				}
				activity = null;
			}
		}
		tempActivityList.clear();
	}

	public static int getScreenWidth() {
		return screenWidth;
	}

	public static void setScreenWidth(int screenWidth) {
		MyApplication.screenWidth = screenWidth;
	}

	public static int getScreenHeight() {
		return screenHeight;
	}

	public static void setScreenHeight(int screenHeight) {
		MyApplication.screenHeight = screenHeight;
	}

	// 这里开始存储部分，

	/**
	 * 保存是否是第一次运行app
	 * 
	 * @return
	 */
	public boolean isFirstRun() {
		return mSharedPreferences.getBoolean("FirstRun", true);//第一次默认为true
	}

	public void setFirstRun(boolean isFirstRun) {
		mSharedPreferences.edit().putBoolean("FirstRun", isFirstRun).commit();
	}

	// 获取保存本地imei数据
	public String getIMEI() {
		return mSharedPreferences.getString("IMEI", "");
	}

	public void setIMEI(String isFirstRun) {
		 mSharedPreferences.edit().putString("IMEI", isFirstRun).commit();
	}
	// 获取保存本地imei数据
	public Boolean getIsLogin() {
		return mSharedPreferences.getBoolean("login", false);
	}

	public void setIsLogin(Boolean canlogin) {
		 mSharedPreferences.edit().putBoolean("login", canlogin).commit();
	}
}
